package _2025_4_16;

import java.io.*;
import java.util.Scanner;

public class CopyFile {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要复制文件的相对路径");
        String Opath=scanner.next();
        File file=new File(Opath);
        if(!file.exists()){
            System.out.println("文件不存在，请确认该路径是否正确");
            return;
        }
        if(!file.isFile()){
            System.out.println("不是一个普通文件");
            return;
        }
        System.out.println("请输入要在哪个路径中进行复制");
        String fpath=scanner.next();
        File tfile=new File(fpath);
        if(!tfile.exists()){
            System.out.println("要进行复制的文件不存在，请检查其路径");
            return;
        }
        if(tfile.isFile()){
            System.out.println("目录路径已存在，是否进行覆盖（YES/NO）");
            String s=scanner.next();
            if(s.equals("NO")){
                System.out.println("停止复制");
                return;
            }
        }
        InputStream inputStream=new FileInputStream(file);
        OutputStream outputStream=new FileOutputStream(fpath);

        byte[]arr=new byte[1024];
        while (true){
            int ret=inputStream.read(arr);
            if(ret==-1)break;;
                outputStream.write(arr,0,ret);
           // ret 变量存储的是 inputStream.read(arr) 方法实际读取到的字节数。
            //优点： 无论 inputStream.read(arr) 读取了多少个字节，outputStream.write(arr, 0, ret) 都只会写入实际读取到的有效字节，
            // 避免了将 arr 数组中残留的旧数据写入到目标文件中。
        }
    }
}
